package lv.servidordisqueria.server.accion;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import lv.mensajeriadisqueria.dto.RolDto;
import lv.mensajeriadisqueria.idomain.IRol;
import lv.mensajeriadisqueria.mensaje.Mensaje;
import lv.servidordisqueria.domain.Rol;
import lv.servidordisqueria.excepcion.DomainNoExistenteException;
import lv.servidordisqueria.repositorio.RolRepositorio;

public class RolAccion {

	/**
	 *  
	 * @param mensaje
	 * @return un nuevo mensaje para escribit
	 */
	public static Mensaje actuar(Mensaje mensaje) {
		Mensaje respuesta = new Mensaje();
		if (Mensaje.TODOS.equalsIgnoreCase(mensaje.getMensaje())) {
			buscarTodos(respuesta);
		}
		return respuesta;
	}

	
	private static void buscarTodos(Mensaje respuesta) {
		try {
			System.out.println("entro a buscas todos los Roles");
			Collection<IRol> todosRoles = RolRepositorio.getInstance().buscarTodos();
			Collection<IRol> roles = new ArrayList<IRol>();
			for (IRol rol : todosRoles) {
				roles.add(tranformarDomainToDto(rol));
			}
			respuesta.setMensaje(Mensaje.ENVIO_TODOS);
			respuesta.setObjeto(roles);
			System.out.println("encontro todos");
		} catch (SQLException e) {
			respuesta.setMensaje(Mensaje.EXCEPTION);
			respuesta.setObjeto(e);
		} catch (DomainNoExistenteException e) {
			respuesta.setMensaje(Mensaje.EXCEPTION);
			respuesta.setObjeto(e);
		}
	}

	public static IRol transformaDtoToDomain(IRol rolDto) {
		IRol rol = new Rol(rolDto.getNombre());
		rol.setIdRol(rolDto.getIdRol());
		rol.setHabilitado(rolDto.getHabilitado());
		return rol;
	}

	public static IRol tranformarDomainToDto(IRol rol) {
		IRol rolDto = new RolDto(rol.getNombre());
		rolDto.setIdRol(rol.getIdRol());
		rolDto.setHabilitado(rol.getHabilitado());
		return rolDto;
	}

}
